package com.ruoyi.project.service;

import java.io.IOException;
import java.util.List;

import com.ruoyi.project.domain.FinRecordVoucher;
import com.ruoyi.project.domain.FinSubject;
import com.ruoyi.project.domain.FinSubjectMonth;

/**
 * 科目余额Service接口
 *
 * @author abel
 * @date 2024-10-15
 */
public interface IFinSubjectMonthService
{
    /**
     * 查询科目余额
     *
     * @param id 科目余额ID
     * @return 科目余额
     */
        FinSubjectMonth selectFinSubjectMonthById(Long id);

    /**
     * 获取科目余额 ，没有找到数据则抛错
     *
     * @param id 科目余额ID
     * @return 科目余额
     */
        FinSubjectMonth getFinSubjectMonthById(Long id);

    /**
     * 查询科目余额列表
     *
     * @param finSubjectMonth 科目余额
     * @return 科目余额集合
     */
    List<FinSubjectMonth> selectFinSubjectMonthList(FinSubjectMonth finSubjectMonth);

    /**
     * 新增科目余额
     *
     * @param finSubjectMonth 科目余额
     * @return 结果
     */
    int importDefaultFinSubjectMonth(FinSubjectMonth finSubjectMonth);

    /**
     * 修改科目余额
     *
     * @param finSubjectMonth 科目余额
     * @return 结果
     */
    int updateFinSubjectMonth(FinSubjectMonth finSubjectMonth);

    /**
     * 批量删除科目余额
     *
     * @param ids 需要删除的科目余额ID
     * @return 结果
     */
    int deleteFinSubjectMonthByIds(Long[] ids);

    /**
     * 删除科目余额信息
     *
     * @param id 科目余额ID
     * @return 结果
     */
    int deleteFinSubjectMonthById(Long id);


    FinSubjectMonth createBySubject(FinSubject finSubject,int year ,int month);

    FinSubjectMonth findBySubjectInfo(FinSubject finSubject,int year ,int month);


    void updateBySubject(FinSubject finSubject);

    void importDefaultFinSubjectMonth(Long packageId, int year, int month) throws IOException;

    void recordToBook(FinRecordVoucher finRecordVoucher);

    void recordCancelToBook(FinRecordVoucher finRecordVoucher);
}
